package edu.eam.paii.proyecto.bean;

import java.util.Date;
import java.util.List;

import javax.ejb.Remote;

import edu.eam.paii.proyecto.entidades.Ahorro_CDT;
import edu.eam.paii.proyecto.entidades.Cliente;
import edu.eam.paii.proyecto.entidades.Cliente_Premio;
import edu.eam.paii.proyecto.entidades.Credito;
import edu.eam.paii.proyecto.entidades.Cuenta;
import edu.eam.paii.proyecto.entidades.CuentaExterna;
import edu.eam.paii.proyecto.entidades.Direccion;
import edu.eam.paii.proyecto.entidades.Entidad;
import edu.eam.paii.proyecto.entidades.Pago_Facturas;
import edu.eam.paii.proyecto.entidades.Servicio;
import edu.eam.paii.proyecto.entidades.SolicitudTarjetaCredito;
import edu.eam.paii.proyecto.entidades.Solicitud_Credito;
import edu.eam.paii.proyecto.entidades.Tarjeta_Credito;
import edu.eam.paii.proyecto.entidades.Tipo;
import edu.eam.paii.proyecto.entidades.Transaccion;
import edu.eam.paii.proyecto.entidades.Turno;

@Remote
public interface BankEJBRemote {

	// cuentas:

	public void crear(int nro_Cuenta, Date fecha_Creacion, int clienteCuenta,
			double saldo, int nroEntidadCuenta);
	
	public void asociarCuentaExterna(int nro_Cuenta,String entidad,int nro_Entidad);
	
	public List<Cuenta> listar();
	
	public List<CuentaExterna> listarExternas();
	
	public void update(int nro_Cuenta,
			double saldo);

	public Cuenta buscar(int nro_Cuenta);
	
	public CuentaExterna buscarCuentaExterna(int nro_cuenta);
	
	// transacciones:
	
	public void CrearTransferencia(int cuentaOrigen, int cuentaDestino,
			double monto, Date fecha, int turno, int cliente) throws Exception;

	public void CrearTransferenciaCuentaCuenta(int nro_Transaccion, Date fecha,
			Double monto, int turnoTransaccion, int clienteTransaccion,
			int cuentaOrigen, int cuentaDestino);

	
	public void crearConsignacion( Date fecha, Double monto,
			int turnoTransaccion, int clienteTransaccion,
			int tipoConsignacion, int nroCuentaConsignacion
			);
	//Cliente:
	public void registrarCliente(int cedula, String nombre, String apellidos,
			int telefono, String correo, Direccion direccionPersona,
			String usuario, String contrasena, double ingresos, double egresos);
	

	public Cliente buscarCliente(int cedula);

	public void eliminar(int cliente);

	public Cliente editar( int telefono,
			String correo, Direccion direccionPersona,
			String contrasena, double ingresos, double egresos,
			List<SolicitudTarjetaCredito> solicitudeTarjetaC,
			List<Pago_Facturas> pagosFacturasCliente,
			List<Tarjeta_Credito> tarjetas_Creditos, List<Cuenta> cuentas,
			List<Ahorro_CDT> ahorro_CDTs, List<Transaccion> transaccionCliente,
			Servicio servicioCliente,
			List<Solicitud_Credito> solicitudes_Creditos,
			List<Credito> creditos, List<Transaccion> transacciones,
			List<Cliente_Premio> premios);
	
	public List<Cliente>listarClientes();
	
	public List<Credito> listarCreditosCliente(String cedula);
	
	public List<Cuenta>  listarCuentasCLiente(String cedula);
}
